from datetime import datetime, timedelta


def get_previous_previous_quarter(date):
    """获取上上季度的起始和结束日期"""
    year = date.year
    quarter = (date.month - 1) // 3 + 1

    # 计算上上季度
    if quarter > 2:
        prev_prev_quarter = quarter - 2
        prev_prev_year = year
    else:
        prev_prev_quarter = quarter + 2
        prev_prev_year = year - 1

    # 计算上上季度的起始和结束月份
    start_month = (prev_prev_quarter - 1) * 3 + 1
    end_month = prev_prev_quarter * 3

    # 返回上上季度的起始和结束日期
    start_date = datetime(prev_prev_year, start_month, 1)
    if end_month == 12:
        end_date = datetime(prev_prev_year + 1, 1, 1) - timedelta(days=1)
    else:
        end_date = datetime(prev_prev_year, end_month + 1, 1) - timedelta(days=1)

    return start_date, end_date


# 在你的主代码中
current_date = datetime.now()
three_months_ago = current_date - timedelta(days=90)

# 获取上上季度的起始和结束日期
prev_prev_quarter_start, prev_prev_quarter_end = get_previous_previous_quarter(current_date)

# 示例：今天是9月17日（三季度），检查一季度未冲销的明细
# prev_prev_quarter_start 将是 1月1日
# prev_prev_quarter_end 将是 3月31日

for item in your_data:  # 假设 your_data 是你的数据源
    voucher_date = item['凭证日期']
    company_name = item['客商名称']

    # 1. 检查是否在3个月内入账
    if voucher_date > three_months_ago:
        log_with_company(公司代码, "debug",
                         f"√ WE/RE类型凭证「{item['凭证编号']}」，按分配「{item['分配']}」小计为负「{item['小计金额']:.2f}」，客商「{company_name}」，凭证日期「{format_date(voucher_date)}」距今不超过3个月")
        continue  # 不提醒，不导出

    # 2. 检查客商名称是否为"国能易购（北京）科技有限公司"
    if company_name == '国能易购（北京）科技有限公司':
        # 检查是否在上上季度未冲销
        if prev_prev_quarter_start <= voucher_date <= prev_prev_quarter_end and not item['已冲销']:
            # 导出提醒
            export_reminder(item)
            log_with_company(公司代码, "warning",
                             f"⚠ WE/RE类型凭证「{item['凭证编号']}」，按分配「{item['分配']}」小计为负「{item['小计金额']:.2f}」，客商「{company_name}」，凭证日期「{format_date(voucher_date)}」属于上上季度且未冲销")
        else:
            # 不提醒，不导出
            log_with_company(公司代码, "debug",
                             f"√ WE/RE类型凭证「{item['凭证编号']}」，按分配「{item['分配']}」小计为负「{item['小计金额']:.2f}」，客商「{company_name}」，凭证日期「{format_date(voucher_date)}」不需要提醒")
    else:
        # 其他客商，所有情况都要提醒，都要导出
        export_reminder(item)
        log_with_company(公司代码, "warning",
                         f"⚠ WE/RE类型凭证「{item['凭证编号']}」，按分配「{item['分配']}」小计为负「{item['小计金额']:.2f}」，客商「{company_name}」，凭证日期「{format_date(voucher_date)}」需要提醒")
